Interessante o tutorial, não sabia que existia essa possibilidade em LUA.
Obrigado por compartilhar @Poccnn
info
Grupo: Grão-Duque
Registrado: 02/10/06
Posts: 3.3k
Reputação: +151
Gênero: Masculino

Interessante o tutorial, não sabia que existia essa possibilidade em LUA.
Obrigado por compartilhar @Poccnn
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino
Fala Xtibianos.
Vim passar um pouco do que aprendi como programar usando SPOO lua.
SPOO > Simulação de programação orientada a objeto.
Lua, não é uma linguagem orientada a objeto, ela apenas simula isso.
Vamos ao que interessa:
Para criar um objeto, primeiro cria-se uma estrutura:
A estrutura pode ter valores inseridos nela.
Agora vamos criar metodos (function) para manipular os valores dentro da estrutura.
Agora voce pode usar os metodos para manipular os dados
Mas há um problema, só existe um objeto para ser manipulado; e se eu quiser maanipular mais obejtos do mesmo tipo?
para isso, lua dispõe de uma função que cria uma metatabela, ou seja, uma tabela que contem os dados originais dessa tabela e mais algumas peculiaridades proprias desse sistema.
Se voce quiser se aprofundar em saber como funciona a herança em spoo lua, veja esse tutorial.
Para criar um novo objeto; vamos criar um metodo que faça isso usando a função setmetatable:
setmetatable(table,metatable)
Dois objetos criados com esse metodo.
dessa forma, esse novo objeto que foi criado e atribuido as variaveis de nomes opala e fusca, pode usar os metametodos já criados para o objeto principal (_veiculo).
Veja que a cor não foi definida para o objeto fusca, então ele retorna o valor padrão que foi declarado na estrutura principal >> _veiculo.cor = "sem cor".
Lua dispõe de varios elementos (variaveis) chaves para manipulação de metatabelas; aqui vou comentar sobre algumas delas:
Agora vamos por em pratica esses elementos para entendermos melhor seu funcionamento:
Usando o parametro __index
ao ser declarado o indice, é usado os valores apontado pelo mesmo.
Usando o parametro __metatable
Usando esse parametro, voce apenas declara qual sera o objeto retornado.
Usando o parametro __call
Toda a chamada que for feita a esse objeto, pode ser processada usando o parametro call.
Usando o parametro __newindex
Ao usar esse parametro, voce declara para onde vai ou onde vai buscar os valores do objeto.
E por ultimo o elemento __tostring
__tostring serve como elemento para receber uma string para outros fins que não sejam metametodos.
Bem é isso pessoal espero que tenham entendido.
Me corrijam caso tenha errado algo.
Editado Agosto 8 por Poccnn
Inserção de informações/formatação